package com.fz.us.oa.core.service.com;

import com.fz.us.admin.base.bean.search.rule.Rule;
import com.fz.us.admin.company.service.BaseFlowService;
import com.fz.us.admin.dict.entity.DictItem;
import com.fz.us.oa.core.entity.com.Person;

import java.util.List;

/**
 * Created by dzw on 2018/3/13.
 */
public interface PersonService extends BaseFlowService<Person, String> {

    /**
     * 获取所有人数量
     */
    int getAllCount(DictItem general);

    /**
     * 根据街道获取居民区的数量
     */
    int getResidentCountByStreet(DictItem street);

    /**
     * 根据条件查询人员列表
     */
    List<Person> findPerson(List<Rule> rules);

    /**
     * 根据是否是被选书记 和 学历查询人数  （学历-全区）
     */
    int getCountEduAll(boolean isBeiXuan, DictItem beiXuan, DictItem edu, DictItem general);

    /**
     * 根据是否是被选书记 和 学历 和 街道 查询人数  （学历-街道）
     */
    int getCountEduAll(boolean isBeiXuan, DictItem beiXuan, DictItem edu, DictItem street, DictItem general);

    /**
     * 根据学历查询人数 （学历-全区）
     */
    int getCountEduAll(DictItem edu, DictItem general);

    /**
     * 根据学历和街道查询人数 （学历-街道）
     */
    int getCountEduAll(DictItem edu, DictItem street, DictItem general);

    /**
    * 查询所有备选书记数量 或 不是备选书记数量
    */
    int getBeiXuanCount(boolean isBeiXuan, DictItem beiXuan, DictItem general);

    /**
     * 根据人员性质 查询人数
     */
    int getCountByPersonNature(DictItem personNature, DictItem general);

    /**
     * 根据人员性质 和街道 查询人数 （人员性质 - 街道）
     */
    int getCountByNatureAndStreet(DictItem personNature, DictItem street, DictItem general);

    /**
     * 获取一个街道上的所有人数
     */
    int getCountByStreet(DictItem street, DictItem general);

    /**
     * 根据是不是备选 和 性别 查询人数 （性别年龄 - 全区）
     */
    int getCountByGenderAndBeiXuan(boolean isBeiXuan, DictItem beiXuan, String gender, DictItem general);

    /**
     * 根据是不是备选 和 性别 和街道 查询人数 （性别年龄 - 街道）
     */
    int getCountByGenderAndBeiXuan(boolean isBeiXuan, DictItem beiXuan, String gender, DictItem street, DictItem general);

    /**
     * 获取居民区换届人
     */
    List<Person> getHuanJieCountByStreet(DictItem street, DictItem tuixiufanpin, DictItem general);

    /**
     * 根据假主键查找person
     */
    Person getByKeyId(String keyId);
}
